const path = require('path')
const entry = require('./webpack.entry.js')

const HtmlWebpackPlugin = require('html-webpack-plugin')
// const ExtractTextPlugin = require("extract-text-webpack-plugin")
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

const pluginsConfig = require("./webpack.plugins.js")
const pxtorem = require('postcss-pxtorem')
const autoprefixer = require('autoprefixer')


const optimizeCss = require('optimize-css-assets-webpack-plugin')

module.exports = {
  // JS 执行入口文件
  entry: entry,
  output: {
    // 把所有依赖的模块合并输出到一个 bundle.js 文件
    filename: './js/[name].bundle.js',
    // 输出文件都放到 superStyle 目录下
    path: path.resolve(__dirname, './superStyle'),
  },
  plugins: pluginsConfig,
  optimization: {
    // minimize: true,
    minimizer: [new optimizeCss({})],

  },
  devServer: {
    contentBase: './superStyle',
    port: 8888,
    host: '127.0.0.1',
    openPage: 'pages'
  },
  module: {
    rules: [
        {
          test: /\.(png|jpg|gif|eot|svg|ttf|woff)$/,
          use:[{
            loader:'url-loader',
            options:{ 
                limit:2000, // 表示小于2kb的图片转为base64,大于5kb的是路径
                // outputPath:'../images', //定义输出的图片文件夹
                name: 'images/[name].[hash:7].[ext]',
                publicPath:"../"
            }
          }]
        },
        {
            test: /\.js$/,
            loader: 'babel-loader',
            exclude: /node_modules/
        },
        {
            test: /\.css/,
            use: [ MiniCssExtractPlugin.loader, 'css-loader' ],
            // loader: 'css-loader',
            // options: {
            //     sourceMap: true,
            //     modules: true,
            //     localIdentName: '[name]---[local]---[hash:base64:5]'
            // }
        },
        // {
        //     test: /\.(css|less)$/,
        //     use: ExtractTextPlugin.extract({
        //         fallback: "style-loader",
        //         // publicPath:'../',
        //         use: [
        //             // require.resolve('style-loader'),
        //             {
        //                 loader: 'css-loader',
        //                 // options: {
        //                 //     importLoaders: n
        //                 // }
        //             },
        //             {
        //                 loader: 'postcss-loader',
        //                 options: {
        //                   ident: 'postcss',
        //                   plugins: () => [
        //                     pxtorem({
        //                       rootValue: 100,
        //                       propWhiteList: []
        //                     }),
        //                     require('postcss-flexbugs-fixes'),
        //                     autoprefixer({
        //                       browsers: [
        //                         'iOS >= 7',
        //                         'Android >= 4',
        //                         '>1%',
        //                         'Firefox ESR',
        //                         'not ie < 9'
        //                       ],
        //                       flexbox: 'no-2009'
        //                     })
        //                   ]
        //                 }
        //             },
        //             {
        //                 loader: 'less-loader',
        //                 options: { javascriptEnabled: true }
        //             }
        //         ]
        //     })
        // }
    ]
  }
};